package com.omi.iberolactalpreventa;

import java.util.ArrayList;
import java.util.Calendar;

import com.omi.iberolactalpreventa.objects.AdapterItem_listado_pedidos;
import com.omi.iberolactalpreventa.objects.ItmListadoPeds;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.WindowManager;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.ListView;
import android.widget.TextView;

public class ListadoPedidos extends Activity{
	
	private TextView txtBusqCodPed;
	private ListView lstPeds;
	private MenuItem itmVerPed;
	private String pedidoSelected;
	private Builder dlgResumen;
	private Cursor c;
	
	@SuppressLint("NewApi")
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_listado_pedidos);

		Bundle extras = getIntent().getExtras();
		
		if(extras!=null)
		{
			Modulebase.verNoEnviados = extras.getBoolean("verNoEnviados");
		}
		
		txtBusqCodPed = (TextView) findViewById(R.id.txtBusqCodPed);
		lstPeds = (ListView) findViewById(R.id.lstPeds);
		
		DialogInterface.OnClickListener lstResum = new DialogInterface.OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int which) {
				
			}
		};

		dlgResumen = new Builder(this);
		dlgResumen.setTitle("Importe Vendido");
		dlgResumen.setPositiveButton("Aceptar", lstResum);
		
		//EVENTOS:
		txtBusqCodPed.addTextChangedListener(new TextWatcher() {
			
			@Override
			public void onTextChanged(CharSequence s, int start, int before, int count) {
				getpedidos();
			}
			
			@Override
			public void beforeTextChanged(CharSequence s, int start, int count,
					int after) {
			}
			
			@Override
			public void afterTextChanged(Editable s) {
			}
		});
		
		lstPeds.setOnItemLongClickListener(new OnItemLongClickListener() {

			@Override
			public boolean onItemLongClick(AdapterView<?> parent, View v,int position, long id) {
				ItmListadoPeds ped =(ItmListadoPeds) parent.getItemAtPosition(position);
				pedidoSelected = ped.getNumPed();
				openOptionsMenu();
				itmVerPed.setEnabled(true);
				return false;
			}
		});
	
		getpedidos();
		getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
		getActionBar().setDisplayHomeAsUpEnabled(true);
	}

	@Override
	public void onBackPressed() {
		finish();
	}
	
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		getMenuInflater().inflate(R.menu.listado_pedidos,menu);
		itmVerPed  = menu.findItem(R.id.itmVerPed);
		itmVerPed.setEnabled(false);
		return true;
	}
	
	@Override
	protected void onResume() {
		super.onResume();
		getpedidos();
	}
	
	@Override
	public void onOptionsMenuClosed(Menu menu) {
		super.onOptionsMenuClosed(menu);
		itmVerPed.setEnabled(false);
	}
	
	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		Intent intNext;
	    switch (item.getItemId()) {
	    case android.R.id.home:
            finish();
            break;
	    case R.id.itmVerPed:
	    	intNext = new Intent("com.omi.iberolactalpreventa.NuevoPedido");
	    	intNext.putExtra("Verped", true);
	    	intNext.putExtra("numPed", pedidoSelected);
	    	intNext.putExtra("idped", pedidoSelected);
	    	startActivity(intNext);
	    	return true;
	    case R.id.itmNuevoPed:
	    	intNext = new Intent("com.omi.iberolactalpreventa.ListadoClientes");
	    	intNext.putExtra("isNew", true);
	    	startActivity(intNext);
	    	return true;
	    case R.id.itmrResumen:
	    	//Sacamos el total para mostrarle en el mensaje:
	    	String fecha = Modulebase.calendar.get(Calendar.DAY_OF_MONTH)+"/"+Modulebase.calendar.get(Calendar.MONTH)+"/"+Modulebase.calendar.get(Calendar.YEAR);
	    	
	    	c = Modulebase.db.ejecutarSelect(new String[]{"SUM(Importe_linea) AS TOTAL"}, "Lin_Pedido","Fecha_Pedido=?", new String[]{fecha});

	    	float total;
	    	if(c!=null && c.moveToFirst() && c.getString(0)!=null)
	    	{
	    		 total = Float.parseFloat(c.getString(0));
	    	}
	    	else
	    	{
	    		total = 0;
	    	}
			dlgResumen.setMessage("Importe vendido con este dispositivo a fecha "+fecha+"\nTOTAL:"+total+"€\nIncluye todas las ventas de rutas y vendedores de este dispositivo para el día indicado.");
		    
	    	dlgResumen.show();
	    	return true;
	    case R.id.itmCancel:
	    	finish();
	    return true;
	    }
		itmVerPed.setEnabled(false);
	    return false;
	}

	private void getpedidos()
	{
		Cursor c;

		lstPeds.setAdapter(null);
		if(Modulebase.verNoEnviados)
		{
		c = Modulebase.db.ejecutarSelect(new String[]{"Venta_a_N_clie,Nombre_Cliente,N_Pedido,Fecha_reg,Su_Ntra_ref"}, "Cab_Pedido","Vendedor=? AND Ruta=? AND EXPORTADO=? AND Nombre_Cliente LIKE ?", new String[]{Modulebase.vendedor,Modulebase.ruta,"0","%"+txtBusqCodPed.getText()+"%"},"Fecha_reg DESC");
		}
		else
		{
		 c = Modulebase.db.ejecutarSelect(new String[]{"Venta_a_N_clie,Nombre_Cliente,N_Pedido,Fecha_reg,Su_Ntra_ref"}, "Cab_Pedido", "Vendedor=? AND Ruta=? AND Exportado=? AND Nombre_Cliente LIKE ?", new String[]{Modulebase.vendedor,Modulebase.ruta,"1","%"+txtBusqCodPed.getText()+"%"},"Fecha_reg DESC");	
		}
		
		
		if(c!=null && c.moveToFirst())
		{
			
			ArrayList<ItmListadoPeds> peds = new ArrayList<ItmListadoPeds>();
			do
			{
				ItmListadoPeds ped = new ItmListadoPeds(c.getString(0),c.getString(1), c.getString(2), c.getString(3), c.getString(4));
				peds.add(ped);
			}while(c.moveToNext());
			
			AdapterItem_listado_pedidos adptr = new AdapterItem_listado_pedidos(this, peds);
			lstPeds.setAdapter(adptr);
		}

	}
	
}
